package com.distribute.framework.dao;

import java.util.List;
import java.util.Map;

import com.distribute.framework.core.util.Function;
import com.distribute.framework.core.web.util.Page;
import com.distribute.framework.core.sql.Table;

/**
 * 通用Mongo的Dao接口
 * @author 飞啊飘啊
 */
@SuppressWarnings("unchecked")
public interface IMongoDao
{
	/**
	 * 获取所有对象
	 * @return
	 */
	public List<Map> getMapList(Table table,Map params,Integer offset,Integer size);

	/**
	 * 获取对象总数
	 * @return
	 */	
	public Long getMapCount(Table table,Map params);
	
	/**
	 * 获取对象分页
	 * @return
	 */	
	public Page getMapPage(Table table,int page,int size,Map params);
	
	/**
	 * 根据查询条件取对象
	 * @param params
	 * @return
	 */
	public Map getMap(Table table,Map params);	

	/**
	 * 根据ID取对象
	 * @param id
	 * @return
	 */
	public Map getMapById(Table table,Object id);	

	/**
	 * 保存对象
	 * @param object
	 */
	public Map saveMap(Table table,Map object);

	/**
	 * 更新对象
	 * @param object
	 */
	public int updateMap(Table table,Map object);
	/**
	 * 更新对象非空字段
	 * @param object
	 */
	public int updateMap$NotNull(Table table,Map object);

	/**
	 * 根据ID删除一个对象
	 * @param id
	 */
	public void deleteMapById(Table table,Object id);
	/**
	 * 根据条件更新对象
	 * @param values
	 * @param params
	 */
	public int updateMapByConfirm(Table table,Map values, Map params);
	/**
	 * 根据条件删除对象
	 * @param params
	 */
	public void deleteMapByConfirm(Table table,Map params);

}